Does the Intel C++ Compiler plug-in integrate into
Microsoft Developer Studio 5.0?
How can I obtain the Intel® Compilers
for Win32 systems?
The Intel C/C++ and FORTRAN Compiler plug-ins are available
only as part of the VTune 2.4 CD. For details on ordering, check
the website: http://developer.intel.com/design/perftool/
Where can I find the Intel C/C++
Compiler release notes?
The release notes can be found in
c:/perform/doc/iccnotes.wri.
Where can I find the Intel FORTRAN
Compiler release notes?
The release notes can be found in
c:/perform/doc/ifcnotes.wri.
Where can I find the Intel C/C++ and
FORTRAN Compiler User's Guides?
There are two user's guides. One is provided with the
C/C++ Compiler and one is provided with the FORTRAN Compiler.
These manuals are provided only in electronic form in the Adobe
Acrobat 3.0 format. No hard copies are available.
Where can I find more information about
VTune, the Compilers, and other performance software for Intel?
Our development tools web site is located at http://developer.intel.com/design/develop.htm.
Information on Intels latest development tools, including
VTune and the Intel Compilers is provided at this site.
Where can I read more about optimizing
my code running on the Intel Architecture?
There is an extensive set of documents and tutorials
provided detailing the Intel Architecture . These include the:
- Intel Architecture Optimization Guide
- Pentium®, Pentium Pro and Pentium II processor Manuals
(3 volumes for each)
- MMXTM Technology manuals
- On-Line tutorials on optimization and processor
architectures
These are available on the VTune CD and on the Intel Developer
Insight web site. Go to the web site: http://developer.intel.com/design/develop.htm
and select the Intel Architecture Tutorials link. A hard copy of
the Intel Architecture Optimization Guide can be obtained by
calling 1-800-548-4725 and requesting document number 242816-00x.
I have both Microsoft Visual C++ 4.2 and Microsoft Visual C++ 5.0 installed on my system. Must I uninstall and reinstall the Intel compiler each time
I switch between 4.2 and 5.0, or is it only necessary that I change my
environment variables: path, lib, and include?
For IDE use, you must uninstall the Intel C/C++ Compiler
version 2.4 and reinstall it into the desired IDE.
Does the Intel FORTRAN Compiler plug-in require the
Microsoft's Visual C++ product be installed?
Yes. The Intel Compiler plug-in requires that Microsoft
Visual C++ be installed because it uses the Microsoft Visual C++ linker
and runtime libraries (i.e. libc.lib).
Are the Microsoft Visual C++ linker and runtime
libraries required for the Intel FORTRAN Compiler plug-in or is there an alternative
source?
We know of no other source for a replacement linker
or runtime libraries.
What is the proper way to uninstall an existing
Intel Compiler plug-in on my system?
To uninstall an existing Intel Compiler plug-in, select
Start -> Setting -> Control Panel -> Add/Remove Application. Select
Intel Compiler plug-in and click Add/Remove button. Or, from Start -> Intel
Performance Tool Set -> Uninstall Intel C++ Compiler plug-in.
When I installed Intel C/C++ Compiler
then Microsoft Visual C++, why isnt the Intel C/C++
Compiler integrated into the Visual C++ development environment?
You must first have Microsoft Visual C++ on your system
when you install the Intel C/C++ Compiler. The Intel C/C++
Compiler installation procedure automatically integrates the
Intel C/C++ Compiler add-on with the Visual C++ development
environment. This gives you the choice of using the Intel C/C++
Compiler to compile the performance-critical portions of the
projects that you create in Visual C++.
I installed the Intel C/C++ Compiler.
How do I invoke it from within the Visual C++ development
environment?
To invoke the Intel C/C++ Compiler from within the Visual
C++ development environment, follow these steps:
- Open a Microsoft project (.mdp or
.mak) file in Visual C++.
- Click on the Tools menu in the Developer Studio.
- Click Select Compiler. The Select Compiler window opens.
- Click on the Intel C/C++ Compiler option.
- Click OK.
Is it possible to have the Intel
Compiler active in both Microsoft Visual C++ 4.x and Microsoft Visual C++ 5.0 in the same
system?
No. Only one of the Intel C/C++ or FORTRAN Compilers can
be active in a single version of MSVC at any time. To switch
between versions of MSVC, it is necessary to uninstall the Intel
Compiler (not simply deleting it) then re-install it selecting
the different version of MSVC on the Select Microsoft Compiler
screen during Intel Compiler installation.
Can I upgrade versions of Microsoft Visual C++ and
still use the Intel Compiler I had previously installed? When I
uninstalled Microsoft Visual C++ 4.x and installed Microsoft Visual C++ 5.0, I get the
following error message when I try to install a new version of
the Intel Compiler: "This selection tool was already
installed in a different version of VC++. Please install in
same".
No. To solve this problem, uninstall the Intel Compiler
and re-install it into the new version of Microsoft Visual C++ , making your
selection on the Select Microsoft Compiler screen during Intel
Compiler installation.
I am having trouble installing the
Intel Compiler. After the initial status bar shows
"installing", it just terminates.
The problem could be caused by:
- Insufficient disk space for extracting the
installation files into a temporary directory. About 30
MBytes of disk space is required to install although the
compiler will finally consume only about 10 MBytes.
- The absence of a TEMP environment variable. Make sure
that a TEMP environment variable is specified.
How do I enable full optimization?
The Intel Compilers by default enable full optimization.
The -O2 option is the default optimization option.
Can I use VTune to optimize code that is
compiled by the Intel C/C++ Compiler?
A. Yes. Use the same Compiler options as recommended by VTune
for Microsoft Visual C++ 4.x/5.0.
I have some 3D graphics code that
requires converting floating point values to integer values. How
can I improve the performance?
In C programs, floating point to integer conversions are
normally somewhat slow. The C language requires truncation of
floating point values assigned to integers. However, for normal
floating point calculations, the processor's default rounding
mode of "round to nearest" is used. Thus, C Compilers
must add code to adjust the processor rounding mode before and
after the floating point to integer conversion.
To improve the performance of floating point to integer
conversions, the Intel C/C++ Compiler offers the -Qrcd option.
This option prevents the Compiler from generating the code which
adjusts the processor rounding mode before and after conversions.
This reduces the overhead of the conversion significantly, but
can lead to slightly different results because the "round to
nearest" processor rounding mode is used.
Note: The -Qrcd option and other optimization options are
described in detail in the "Optimizations" chapter of
the Intel C/C++ Compiler User's Guide.
How do I produce code that targets a
particular processor ?
To target a binary application to run on a specific processor, use the -G
option to optimize for that processor:
-GB | Choose GB when the binary application must run well on a variety of
Intel processors. This type blends optimization for performance across
the entire Intel family of processors. The GB option is ON by default. |
-G5 | Choose G5 when the binary application runs primarily on the
Pentium® processor. |
-G6 | Choose G6 when the binary application runs primarily on the
Pentium® Pro processors, Pentium II processors or Celeron processors |
Note: The -G target processor options and other optimization options are
described in detail in the "Optimizations" chapter of the Intel C/C++ Compiler
User's Guide for Win32* Systems. Regardless of your choice, your code will
still run on all 32-bit Intel processors (Intel486 processor, Pentium® processor, Pentium Pro processor, Pentium II processor, Celeron processor), these options only guide the compiler towards the
processor on which your application will be primarily executed.
Why does -Qmem slow my code down?
Low iteration count loops that are common in
integer code (character manipulation, byte manipulation,
graphics) can be hurt by the overhead of various loop
transformations, like loop unrolling. In these cases, the
overhead of calculating the loop constraints and
addressing may be greater than that of loop.
Also, some transformations increase the size of the
code which may degrade performance if the application is
sensitive to such.
When I am using the profile-guided
optimizations available with the Intel Compiler, the
Qprof_use switch does not generate a *.dpi file. What am I
doing wrong?
In order to generate the pgopti.dpi file, the Intel C/C++
Compiler must read the dynamic information files (*.dyn)
generated by the instrumented program. Use the -Qprof_dir option
to specify the directory in which dynamic information files will
be located. The -Qprof_dir option should be used for both the
instrumentation compilation (-Qprof_gen) and the feedback
compilation (-Qprof_use) phases of profile-guided optimization.
Note: Please refer to the "Optimizations" chapter of
the Intel C/C++ Compiler User's Guide for more information on
profile-guided optimizations.
My code contains #pragma
intrinsic(memcpy), but the Intel C/C++ Compiler generates a call
to memcpy rather than inline code. Why?
The pragma intrinsic is accepted without error but has no
effect. Your command line argument must include the Oi (or
-O2) option in order to inline intrinsic functions.
Is there any on-line help for the Intel C/C++ and
FORTRAN compiler plug-ins?
Command-line help is available by typing the following
at the command line: "icl -help" or "icl -?" for the
Intel C/C++ compiler, and "ifl -help" or "ifl -?" for
the Intel FORTRAN compiler. Additional on-line help can be found in the
Intel C/C++ Compiler User's Manual for Win32* Systems.
How do I know which Intel compiler switches/options I am using in the Microsoft
Visual C++* Integrated Development Environment(IDE)?
The Intel compiler switches/options can be found in the 'Project Options'
section of the 'C/C++' tab in the 'Project Settings' dialog box. To get to the
'Project Settings' dialog box select the 'Project' menu item followed by the
'Settings' submenu item. Additional options you want to include in each
compilation can be specified in the icl.cfg file located in the perform/bin
directory.
Is there a version of the Intel compiler which runs under the Linux* operating
system?
There is no version of the Intel compiler that runs under the Linux operating
system.
Where can I get a copy of the Intel(R) FORTRAN Compiler for Unix?
The Intel® FORTRAN Compiler for Unix is no longer available. You might
consider EPC's FORTRAN Compiler for UNIX systems.
Using the Microsoft Visual C++ IDE, I
have inserted several files into my project. How do I use the Microsoft
Visual C++ compiler to compile selected files, when I have selected the
Intel compiler to be used by default.
The Intel C/C++ Compiler plug-in provides support
to override the compiler selected in the Intel Compiler Selection Tool.
Using this feature allows one to force the use of either the Intel C/C++
Compiler or the Microsoft Visual C++ Compiler for selected files, while
building most of the files in a project using the compiler that was selected
in the Intel Compiler Selection Tool.
The feature is activated using special preprocessor
macros:
_USE_INTEL_COMPILER use Intel C/C++ compiler for
selected files
_USE_NON_INTEL_COMPILER use Microsoft Visual C/C++
compiler for selected files
Adding one of these macros to the build settings
for a file will override the currently selected compiler and force compilation
with the specified compiler. To use these macros in the Microsoft Developer
Studio, follow these steps:
1. Open a C/C++ project.
2. Open the "Project Settings" dialog box.
3. In the "Project Settings" dialog, select the configuration
to effect in the "Settings For" list.
4. Select the file(s) you wish to modify.
5. Click on the C/C++ tab.
6. In the C/C++ tab, select General from the Category drop-down list.
7. In the "Preprocessor definitions" edit box, add the _USE_INTEL_COMPILER
macro to force the use of the Intel C/C++ Compiler for the selected file(s).
Add the _USE_NON_INTEL_COMPILER macro to force the use of the Microsoft
Visual C++ Compiler for the selected files.
Please see the Intel C/C++ Compiler Release
Notes for more information.
My program compiles cleanly with Microsoft
Visual C++, but when I use the Intel Compiler I get many more warnings.
Why?
- At its default settings, the Intel Compiler warns
about certain constructs that the Microsoft compiler does not. The -w
or -Wn option is used to suppress warning
messages or to enable remarks during the preprocessing and compilation
phases. The available options are:
-W0,-w Displays error messages only.
-W1,-W2,-W3 Displays warnings and error messages.
The compiler uses this level as the default.
-W4 Displays remarks, warnings, and error messages.
Please see the Intel C/C++ Compiler User's Guide
for Win32* Systems for more information
Does the C/C++ compiler support 64-bit ints
and 80-bit floats?
64-bit ints are supported with the __int64 or long long datatypes. The compiler does support 80-bit long doubles when
the /Qlong_double option is specified. See the Intel C/C++ Compiler
User's Guide for Win32* Systems for limitation on this option.
When do I need to use the xilink.exe instead
of link.exe?
The executable xilink.exe is used when with multifile
interprocedural optimization (-Qipo). Multifile interprocedural optimization
(-Qipo) involves an additional compilation step immediately before the
link step. This step is hidden when you compile and link using icl. However,
most applications are built using a makefile or a file with a similar function
to a makefile. Makefiles usually call the Microsoft linker link.exe to
do the linking. However, when you use the -Qipo option to accomplish multifile
interprocedural optimization you must use the Intel linker driver xilink.exe
instead. The following example demonstrates usage for xilink.exe:
prompt> xilink -Qipo -out:filename.exe a.obj b.obj
Please see the Intel C/C++ Compiler User's Guide
for Win32* Systems for more information.
Can I mix object files from Microsoft, Borland, Symantec, Lahey, Metaware, etc.,
compilers with the Intel C/C++ Compiler?
The Intel C/C++ Compiler is only Microsoft compatible.
Where can I find a list of known bugs and possible
workarounds in the compiler?
A file containing a list of known problems and
their potential workaround is placed in your /perform/doc directory during
installation. If any additional bugs are discovered, please contact us
at developer_support@intel.com or http://developer.intel.com/design/perftool/icl24/icl24sup.htm.
What are icl.cfg / ifl.cfg
configuration files?
A user configuration file named icl.cfg/ifl.cfg can be
added to the directory where icl/ifl is installed. In this file,
you can specify common options that you want to be included in
each compilation. Options in the configuration file are processed
in the order they appear, followed by any command-line options
specified on Compiler invocation.
You can decrease the time you spend entering command-line
options and ensure consistency by using the configuration file to
automate some command-line entries. However, you should be aware
that options placed in the configuration file will be included
each time you run the Compiler. See the Intel C/C++ Compiler
Users Guide for more details.
Click here to view a sample icl.cfg
file.
Why do I have to prototype floating
point routines?
A. Due to the nature of the floating point units register
stack, it is critical that care is taken to ensure functions that
return floats and double are prototyped as such. When not done,
the Compiler assumes the return type is an int, and will not be
able to manage the floating point stack correctly. In some cases,
this can end up causing an application to not execute correctly,
giving wrong results, or causing floating point stack overflow.
What are the differences between the
various Intel Compiler debug switches?
A. In the Intel C/C++ Compiler, the -Zi and -Z7 options are
equivalent. Both options instruct the Compiler to generate
symbolic debugging information in the object file for use by
source-level debuggers. The -Zd option only produces line number
information in the object file (for debugging).
What are the default Intel C/C++ and
FORTRAN Compilers calling conventions?
The Intel C/C++ Compiler supports the same calling
conventions as Microsoft Visual C++. These are __cdecl,
__stdcall, __fastcall, and thiscall. The __cdecl calling
convention is the default. The differences between them are in
the naming of the routines, the stack usage, and parameter
passing. (Please refer to the Microsoft Visual C++ Books Online
for details on the differences.)
The Intel FORTRAN Compiler supports two calling
conventions, a hybrid __cdecl/UNIX ABI convention and the
Microsoft PowerStation FORTRAN default calling convention.
- The hybrid __cdecl/UNIX ABI is compatible with the
Microsoft PowerStation FORTRAN "C" calling
convention. That is, if the programmer includes an
interface block in the FORTRAN code compiled by
PowerStation and defines the calling convention to be
'C', the interface will match the Intel FORTRAN default.
There are more details about the calling conventions in
the Intel Compiler User's Guides.
- Using the Intel FORTRAN option /Gz, the interface
generated will exactly match the default call interface
generated by PowerStation by default (i.e., without any
interface block).
Can I compile my application with a mix
of the Intel Compiler and the Microsoft Visual C++* Compiler?
Yes, the Intel C/C++ Compiler allows this through use of
the _USE_INTEL_COMPILER and _USE_NON_INTEL_COMPILER macros. These
macros are documented in the release notes.
Can I use the Intel Compilers from a
DOS command-line?
While the Intel Compilers can be invoked from a DOS
command-line outside of the Microsoft Visual C++ Integrated
Development Environment (IDE), Intel does not produce its own
linker, header files, C/C++ libraries or IDE so the Intel
compiler plug-ins still require those components from the
Microsoft Visual C++ to produce executable programs. With the
Microsoft Visual C++ product installed, the Intel Compilers can
be invoked either from the DOS command line or from within the
IDE.
How can I use the Intel FORTRAN
compiler with Microsoft Developer Studio 97 and Visual C++ 5.0?
The Intel FORTRAN Compiler plug-in does not directly support
integration with Microsoft Developer Studio 97*. However, it is
possible to use the Intel FORTRAN Compiler in projects built within
Developer Studio 97. The steps to build using the Intel FORTRAN
Compiler in Developer Studio 97, as well as limitations of this
procedure, are described below.
Setup the Directories for Executables, Libraries, and Include Files
Check that the correct environment variables have been set to run the
Intel FORTRAN Compiler. This step is particularly important if the
Intel C/C++ Compiler plug-in is not already installed in Developer
Studio 97 (Visual C++ 5.0).
- Select Options from the Tools menu item.
- Select the Directories tab.
- Under the "Show directories for:" dropdown menu, the following menu
items should include the directories shown (assuming you have
installed the Intel FORTRAN Compiler on your C: drive). You must add
the directory entries if they don't exist.
Show Directories For | Directories
Executables files | c:\perform\bin |
Executables files | c:\perform\bin |
Include files | c:\perform\include |
Include files | c:\perform\include |
Library files | c:\perform\lib |
Library files | c:\perform\lib |
You are now ready to create and build a FORTRAN Project:
Creating and Building a FORTRAN Project
- Create a project.
- Insert FORTRAN file(s) into the project by selecting "Add to
Project" from the Project menu.
- Select the Files sub-menu item.
Note: By default only C++ File Types are listed. To display
FORTRAN file(s), list all file types by selecting "All Files" from the
"Files of type:" list.
- Select all FORTRAN (and C/C++) files you want to add to the
project.
- Click on the Open button to add the files to your project.
- In the File View tab of the Workspace window, Select the
FORTRAN file(s) you want to compile with the Intel FORTRAN compiler.
- Open the "Project Settings" window by selecting Settings from the
Project menu. Alternatively, you can right-click on the selected
files an select Settings from the pop-up menu.
- Select the General tab.
- Check the "Always use custom build step" check box.
Note: You will now see a "Custom Build" tab.
- Select the "Custom Build" tab.
- Enter the appropriate information into the "Build
command(s)" and "Output file(s)" areas.
For example:
Build command(s): |
ifl -c $(InputName).f |
Output files(s): | $(InputName).obj |
Note: $(InputName) is a directory and filename macro. See "custom
build commands, macros" in the Microsoft Visual C++ 5.0 help for more
information.
- 12. Select OK in the "Project Settings" window.
- 13. Create an executable by selecting "Rebuild All" from the
Build menu. All other files in the project not compiled with the
"Custom Build" settings will be compiled with the default settings and
compiler.
Limitations and Defects
There are several things to note when compiling FORTRAN from within
Developer Studio 97:
- 1. The Editor does not enable Syntax Coloring with FORTRAN files.
- The Project Settings does not contain a FORTRAN option tab.
- FORTRAN file types are not listed when opening files. List all
file types by selecting "All Files" from the "Files of type:" list to
list FORTRAN files.
- Linking a file with the Microsoft Visual C++ 5.0 linker fails when
that file was compiled with the -Zi or -Z7 options and the file
contains a subprogram with a formal parameter that is an assumed size
array. The workaround, if only line number information is needed, is
to compile with the -Zd option.
- When debugging, stepping out of a routine sometimes causes the
program to hang.
Workaround: Place a breakpoint in the calling routine after the
routine you want to step into. Then, continuing (GO) from within the
called routine you stepped into will permit you to exit the routine
without hanging the program
Is the Intel C/C++ Compiler plug-in's name mangling
compatible with other compilers?
The Intel C/C++ Compiler plug-in is compatible with the
Microsoft name decoration.
Microsoft has changed their mangling from release
to release, and Intel provides switches to specify the managling methods
you want our compiler plug-in to use.
Does the Intel C/C++ Compiler plug-in allow use of
the "align 16" directive in inline assembly blocks?
The Intel C/C++ Compiler plug-in does support the align
directive in inline assembly. In the following example:
__asm {
mov eax, 4
align 16 mov eax, 5
}
The "mov" instruction after the "align 16" will be aligned on a 0 MOD 16 address when compiled with the Intel
C/C++ Compiler plug-in.
Does Intel offer a Microsoft PowerStation Fortran compiler?
The Intel FORTRAN compiler plug-in is a FORTRAN 77 compiler
which has some Microsoft extensions in it. So it is not fully compatible
with Microsoft PowerStation Fortran in the language it supports. It does
however integrate into the Microsoft Developer Studio version 4.x (if Powerstation
Fortran is installed), and produce compatible object code and debug information.
Does Intel offer a DEC compatible Fortran compiler?
Our current Fortran Compiler plug-in is a Fortran 77 compiler
which has some Microsoft extensions in it. So it is not fully compatible
with DEC Fortran in the language it supports. It does however integrate
into the Microsoft Developer Studio version 4.x (as does Microsoft PowerStation Fortran),
and produce compatible object code and debug information.
Does the Intel Fortran Compiler plug-in integrate into
Microsoft Developer Studio 5.0?
No. The Intel FORTRAN Compiler plug-in does integrate
into the Microsoft Developer Studio version 4.x (as long as Microsoft PowerStation
FORTRAN is installed), and produce compatible object code and debug information.
Does the Intel C++ Compiler plug-in integrate into
Microsoft Developer Studio 5.0?
Yes. We integrate into Microsoft Developer Studio 4.x
or 5.0 (Professional editions).
The 2.4 version of the Intel C++ Compiler plug-in supports
all the languages extensions found in the Microsoft C++ compiler version 4.2.
If you would like to comment on this FAQ or
submit additional questions, send email to:
developer_support@intel.com